home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 290_02 / scan.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-05-12  |  37.1 KB  |  1,267 lines

  1. #define YY_DEFAULT_ACTION YY_FATAL_ERROR( "flex scanner jammed" );
  2. #define FLEX_USE_ECS
  3. #define FLEX_USE_MECS
  4. /* A lexical scanner generated by flex */
  5.  
  6. #include "skeleton.h"
  7.  
  8. #define INITIAL 0
  9. /*
  10. **    file:        scan.l
  11. **    purpose:    Scanner for flex input
  12. **    mods:        1989.12.30 - Roberto Artigas Jr
  13. **            Updated this file to match the 'scan.c'
  14. **            more closely. It seems that the same
  15. **            indivitual that had NOT run the 'parse.y'
  16. **            file through BISON/YACC for a while, had
  17. **            ALSO not run 'scan.l' through FLEX/LEX.
  18. */
  19. /*
  20.  * Copyright (c) 1987, the University of California
  21.  * 
  22.  * The United States Government has rights in this work pursuant to
  23.  * contract no. DE-AC03-76SF00098 between the United States Department of
  24.  * Energy and the University of California.
  25.  * 
  26.  * This program may be redistributed.  Enhancements and derivative works
  27.  * may be created provided the new works, if made available to the general
  28.  * public, are made available for use by anyone.
  29.  */
  30. #include <io.h>
  31. #include <fcntl.h>
  32.  
  33. #include "flexdef.h"
  34. #include "parse.h"
  35. #include "sym.h"
  36. #include "main.h"
  37. #include "misc.h"
  38.  
  39.  
  40. #define ACTION_ECHO fprintf( temp_action_file, "%s", yytext )
  41. #define MARK_END_OF_PROLOG fprintf( temp_action_file, "%%%% end of prolog\n" );
  42.  
  43.  
  44. #undef YY_DECL
  45. #define YY_DECL \
  46.     int flexscan( void)
  47.  
  48. #define RETURNCHAR \
  49.     yylval = yytext[0]; \
  50.     return ( CHAR );
  51.  
  52. #define RETURNNAME \
  53.     (void) strcpy( nmstr, yytext ); \
  54.     return ( NAME );
  55.  
  56. #define PUT_BACK_STRING(str, start) \
  57.     for ( i = strlen( str ) - 1; i >= start; --i ) \
  58.         unput(str[i])
  59. #define SECT2 2
  60. #define SECT2PROLOG 4
  61. #define SECT3 6
  62. #define CODEBLOCK 8
  63. #define PICKUPDEF 10
  64. #define SC 12
  65. #define CARETISBOL 14
  66. #define NUM 16
  67. #define QUOTE 18
  68. #define FIRSTCCL 20
  69. #define CCL 22
  70. #define ACTION 24
  71. #define RECOVER 26
  72. #define BRACEERROR 28
  73. #define C_COMMENT 30
  74. #define C_COMMENT_2 32
  75. #define ACTION_COMMENT 34
  76. #define ACTION_STRING 36
  77. #define PERCENT_BRACE_ACTION 38
  78. #define YY_JAM 234
  79. #define YY_JAM_BASE 886
  80. #define YY_TEMPLATE 235
  81. static char l[235] =
  82.     {   0,
  83.        -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
  84.        -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
  85.        -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
  86.        -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
  87.        14,    7,   13,   11,    7,   12,   14,   14,   14,   10,
  88.        46,   39,   40,   32,   46,   45,   30,   46,   46,   46,
  89.        39,   28,   46,   45,   31,  100,   27,   99,  100,   21,
  90.       100,   23,   22,   24,   52,  100,   48,   49,   51,   53,
  91.        67,   68,   65,   64,   66,   54,   56,   55,   54,   60,
  92.        59,   60,   60,   62,   62,   62,   63,   76,   80,   79,
  93.  
  94.        81,   81,   74,   75,  100,   25,   70,   69,   17,   19,
  95.        18,   89,   91,   90,   83,   85,   84,   92,   94,   95,
  96.        96,   72,   72,   73,   72,    7,   11,    0,    7,    1,
  97.         0,    2,    0,    8,    4,    5,    0,    3,   10,   39,
  98.        40,    0,    0,   35,    0,    0,   97,   97,   34,   33,
  99.        34,    0,   39,   28,    0,    0,    0,   42,   38,    0,
  100.        27,   26,    0,   21,    0,   23,   22,   50,   51,   64,
  101.        98,   98,   57,   58,   61,   76,    0,   78,    0,   77,
  102.         0,   25,   17,   15,   89,   87,   83,   82,   92,   93,
  103.        72,   72,   72,   71,    1,    0,    9,    8,    0,    0,
  104.  
  105.         6,   36,    0,   37,   43,    0,   97,   34,   34,   44,
  106.        29,    0,   36,    0,   29,    0,   42,    0,   20,   98,
  107.         0,   16,    0,   88,   71,    0,    0,   97,   98,    0,
  108.         0,    4,    0,    0
  109.     } ;
  110.  
  111. static char e[128] =
  112.     {   0,
  113.         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
  114.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  115.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  116.         1,    2,    1,    4,    5,    6,    7,    1,    8,    9,
  117.         9,   10,    9,   11,   12,    9,   13,   14,   15,   15,
  118.        15,   15,   15,   15,   15,   15,   15,    1,    1,   16,
  119.         1,   17,    9,    1,    1,    1,    1,    1,    1,    1,
  120.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  121.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  122.        18,   19,   20,   21,   22,    1,   23,   22,   22,   22,
  123.  
  124.        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
  125.        22,   22,   22,   24,   25,   26,   22,   22,   22,   27,
  126.        22,   22,   28,   29,   30,    1,    1
  127.     } ;
  128.  
  129. static char m[31] =
  130.     {   0,
  131.         1,    2,    3,    4,    1,    1,    1,    5,    1,    6,
  132.         1,    1,    5,    7,    7,    1,    1,    1,    8,    9,
  133.         1,    7,    7,    7,    7,    7,    7,    5,    1,   10
  134.     } ;
  135.  
  136. static short int b[291] =
  137.     {   0,
  138.         0,   26,   52,   80,  276,  275,    0,    0,  274,    1,
  139.         3,    7,  107,  132,  255,  254,  157,  185,   11,   13,
  140.        54,   57,   85,  100,  213,  241,  271,  267,    4,    8,
  141.         9,   10,   32,   33,   34,   37,   60,   88,  114,  120,
  142.       886,  266,  886,    0,   43,  886,  264,  119,  256,    0,
  143.       886,  134,  886,  886,   92,  886,  886,  246,  250,  258,
  144.       284,  886,  256,  252,  886,  258,    0,  886,  257,  886,
  145.       108,    0,  257,  886,  886,  886,  886,  237,    0,  886,
  146.       886,  886,  886,   99,  886,  886,  886,  886,  243,  886,
  147.       886,  242,  243,  886,    0,  239,  886,    0,  886,  886,
  148.  
  149.        66,  242,  886,  886,  248,  886,  886,  886,    0,  886,
  150.       237,    0,  886,  235,    0,  886,  234,    0,  886,  886,
  151.         0,    0,   65,  886,  216,  240,    0,  237,  137,  886,
  152.       236,  886,  235,    0,  211,  886,  233,  886,    0,  162,
  153.       886,  207,  231,  886,  131,   86,  886,  138,    0,  886,
  154.       300,  112,  329,  886,  164,  163,  167,    0,  886,  230,
  155.         0,  886,  229,  886,  228,    0,  228,  886,    0,  147,
  156.       886,  160,  886,  886,  886,    0,  170,  886,    0,  886,
  157.       226,  886,    0,  222,    0,  219,    0,  886,    0,  886,
  158.         0,  174,  190,    0,  886,  190,  886,    0,  167,  145,
  159.  
  160.       886,  886,  142,  886,  886,  183,  168,    0,    0,  886,
  161.       886,  176,  181,  182,  886,  198,    0,  139,  886,  190,
  162.       125,  886,   99,  886,    0,   53,  192,  195,  199,   33,
  163.       204,  886,  208,  886,  358,  368,  378,  388,  398,  408,
  164.       418,  428,  438,  448,  458,  468,  478,  488,  498,  508,
  165.       518,  528,  538,   34,  548,  558,  568,   14,  578,  588,
  166.       598,  608,  618,  628,  638,  648,   11,  658,  668,  678,
  167.       688,  697,  707,  717,  727,  737,  747,  757,  767,  777,
  168.       787,  797,  807,  817,  826,  836,  846,  856,  866,  876
  169.     } ;
  170.  
  171. static short int d[291] =
  172.     {   0,
  173.       235,  235,  236,  236,  237,  237,  238,  238,  239,  239,
  174.       240,  240,  241,  241,  242,  242,  243,  243,  244,  244,
  175.       245,  245,  246,  246,  247,  247,  248,  248,  242,  242,
  176.       249,  249,  250,  250,  251,  251,  252,  252,  253,  253,
  177.       234,  234,  234,  254,  255,  234,  256,  257,  234,  258,
  178.       234,  234,  234,  234,  234,  234,  234,  259,  260,  261,
  179.       262,  234,  234,  234,  234,  263,  264,  234,  265,  234,
  180.       265,  266,  234,  234,  234,  234,  234,  234,  267,  234,
  181.       234,  234,  234,  234,  234,  234,  234,  234,  260,  234,
  182.       234,  268,  269,  234,  270,  260,  234,  271,  234,  234,
  183.  
  184.       272,  234,  234,  234,  273,  234,  234,  234,  274,  234,
  185.       234,  275,  234,  234,  276,  234,  234,  277,  234,  234,
  186.       278,  279,  279,  234,  279,  234,  254,  255,  255,  234,
  187.       256,  234,  280,  281,  234,  234,  282,  234,  258,  234,
  188.       234,  234,  283,  234,  259,  259,  234,  234,  284,  234,
  189.       284,  262,  262,  234,  262,  262,  285,  286,  234,  263,
  190.       264,  234,  265,  234,  287,  266,  234,  234,  267,  234,
  191.       234,  234,  234,  234,  234,  271,  272,  234,  272,  234,
  192.       273,  234,  274,  288,  275,  289,  276,  234,  277,  234,
  193.       279,  279,  279,  290,  234,  280,  234,  281,  234,  282,
  194.  
  195.       234,  234,  283,  234,  234,  259,  234,  284,  151,  234,
  196.       234,  262,  262,  285,  234,  285,  286,  287,  234,  234,
  197.       288,  234,  289,  234,  290,  234,  259,  234,  234,  234,
  198.       259,  234,  259,-32767,  234,  234,  234,  234,  234,  234,
  199.       234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
  200.       234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
  201.       234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
  202.       234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
  203.       234,  234,  234,  234,  234,  234,  234,  234,  234,  234
  204.     } ;
  205.  
  206. static short int n[917] =
  207.     {   0,
  208.       234,   42,   43,   70,   73,   74,  107,   71,   73,   74,
  209.       107,  110,  110,   87,   88,   87,   88,  169,  111,  111,
  210.       139,   44,   44,   44,   44,   44,   44,   45,   46,   89,
  211.        47,   89,   48,  108,  113,  113,  116,  108,   49,  116,
  212.       127,  114,  114,  117,  129,  130,  117,   50,   50,   50,
  213.        50,   50,   50,   52,   53,   54,   76,   55,  232,   76,
  214.        56,   56,  119,  120,   56,   91,  192,   57,   91,   58,
  215.        59,  193,   92,  178,   93,   92,  230,   93,  121,   60,
  216.        56,   61,   62,   54,  179,   55,   63,   76,   56,   56,
  217.       119,  120,   64,  144,  144,   57,   95,   58,   59,  206,
  218.  
  219.        65,  224,   76,   96,   97,  145,  121,   60,   56,   76,
  220.       164,   95,  170,  170,  211,  123,  124,   77,   96,   97,
  221.       125,  123,  124,   78,  212,  134,  125,  222,   79,   79,
  222.        79,   79,   79,   79,   76,  140,  141,  165,  129,  130,
  223.       142,  219,   77,  135,  204,  136,  137,  201,   78,  146,
  224.       205,  207,  207,   79,   79,   79,   79,   79,   79,   82,
  225.       170,  170,  143,  140,  141,  211,  211,   83,  142,  215,
  226.        84,   84,  159,  220,  220,  192,  212,  178,  211,  216,
  227.       193,  228,  228,  211,  215,  234,   85,   82,  179,  226,
  228.       143,  213,  197,  212,  216,   83,  227,  227,   84,   84,
  229.  
  230.       215,  146,  205,  229,  229,  231,  231,  203,  147,  147,
  231.       146,  205,  171,  171,   85,   99,  100,  233,  233,  194,
  232.       101,  224,  146,  205,  222,  102,  146,  205,  182,  167,
  233.       219,  164,  161,  204,  202,  201,  199,  197,  132,  195,
  234.       103,  126,  104,   99,  100,  194,  188,  186,  101,  184,
  235.       182,  180,  148,  102,  174,  172,  148,  168,  167,  164,
  236.       161,  159,  158,  148,  146,  138,  132,  126,  103,  106,
  237.       104,  150,  150,  106,   80,   80,   70,   67,   67,  151,
  238.       151,  151,  151,  151,  151,  153,  154,  234,  234,  234,
  239.       155,  234,  234,  234,  234,  234,  156,  234,  234,  234,
  240.  
  241.       234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
  242.       234,  234,  157,  209,  209,  234,  234,  234,  234,  234,
  243.       234,  209,  209,  209,  209,  209,  209,  234,  234,  210,
  244.       153,  154,  234,  234,  234,  155,  234,  234,  234,  234,
  245.       234,  156,  234,  234,  234,  234,  234,  234,  234,  234,
  246.       234,  234,  234,  234,  234,  234,  234,  157,   41,   41,
  247.        41,   41,   41,   41,   41,   41,   41,   41,   51,   51,
  248.        51,   51,   51,   51,   51,   51,   51,   51,   66,   66,
  249.        66,   66,   66,   66,   66,   66,   66,   66,   68,   68,
  250.        68,   68,   68,   68,   68,   68,   68,   68,   69,   69,
  251.  
  252.        69,   69,   69,   69,   69,   69,   69,   69,   72,   72,
  253.        72,   72,   72,   72,   72,   72,   72,   72,   75,   75,
  254.        75,   75,   75,   75,   75,   75,   75,   75,   76,   76,
  255.        76,   76,   76,   76,   76,   76,   76,   76,   81,   81,
  256.        81,   81,   81,   81,   81,   81,   81,   81,   86,   86,
  257.        86,   86,   86,   86,   86,   86,   86,   86,   90,   90,
  258.        90,   90,   90,   90,   90,   90,   90,   90,   94,   94,
  259.        94,   94,   94,   94,   94,   94,   94,   94,   98,   98,
  260.        98,   98,   98,   98,   98,   98,   98,   98,  105,  105,
  261.       105,  105,  105,  105,  105,  105,  105,  105,  109,  109,
  262.  
  263.       109,  109,  109,  109,  109,  109,  109,  109,  112,  112,
  264.       112,  112,  112,  112,  112,  112,  112,  112,  115,  115,
  265.       115,  115,  115,  115,  115,  115,  115,  115,  118,  118,
  266.       118,  118,  118,  118,  118,  118,  118,  118,  122,  122,
  267.       122,  122,  122,  122,  122,  122,  122,  122,  128,  128,
  268.       128,  128,  128,  128,  128,  128,  128,  128,  131,  131,
  269.       131,  131,  131,  131,  131,  131,  131,  131,  133,  133,
  270.       133,  133,  133,  133,  133,  133,  133,  133,  145,  145,
  271.       234,  145,  145,  145,  145,  145,  234,  145,  147,  147,
  272.       234,  147,  147,  147,  147,  147,  147,  147,  149,  149,
  273.  
  274.       234,  149,  149,  149,  149,  149,  149,  149,  152,  152,
  275.       152,  152,  152,  152,  152,  152,  152,  152,  160,  160,
  276.       160,  160,  160,  160,  160,  160,  160,  160,  162,  234,
  277.       234,  162,  162,  162,  162,  162,  162,  162,  163,  163,
  278.       163,  163,  163,  163,  163,  163,  163,  163,  166,  166,
  279.       234,  166,  166,  166,  166,  166,  166,  166,  171,  171,
  280.       234,  171,  171,  171,  171,  171,  171,  171,  173,  173,
  281.       234,  173,  173,  173,  173,  173,  173,  173,  175,  175,
  282.       234,  175,  175,  175,  175,  175,  234,  175,  176,  176,
  283.       234,  234,  234,  176,  176,  176,  176,  177,  177,  234,
  284.  
  285.       177,  177,  177,  177,  177,  177,  177,  181,  181,  181,
  286.       181,  181,  181,  181,  181,  181,  181,  183,  183,  234,
  287.       183,  183,  234,  183,  183,  183,  183,  185,  185,  234,
  288.       185,  185,  234,  185,  185,  185,  185,  187,  187,  234,
  289.       187,  187,  234,  187,  187,  187,  187,  189,  189,  234,
  290.       234,  189,  189,  189,  234,  189,  189,  190,  190,  234,
  291.       190,  190,  190,  190,  190,  190,  190,  191,  191,  234,
  292.       191,  191,  191,  191,  191,  191,  191,  196,  196,  196,
  293.       196,  196,  196,  196,  196,  196,  196,  198,  198,  234,
  294.       198,  198,  198,  198,  198,  198,  198,  200,  200,  200,
  295.  
  296.       200,  200,  200,  200,  200,  200,  200,  203,  203,  203,
  297.       203,  203,  203,  203,  203,  203,  203,  208,  208,  234,
  298.       208,  208,  208,  208,  208,  208,  214,  214,  214,  214,
  299.       214,  214,  214,  214,  214,  214,  217,  217,  234,  217,
  300.       217,  217,  217,  217,  217,  217,  218,  218,  218,  218,
  301.       218,  218,  218,  218,  218,  218,  221,  221,  221,  221,
  302.       221,  221,  221,  221,  221,  221,  223,  223,  223,  223,
  303.       223,  223,  223,  223,  223,  223,  225,  225,  234,  225,
  304.       225,  225,  225,  225,  225,  225,  234,  234,  234,  234,
  305.       234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
  306.  
  307.       234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
  308.       234,  234,  234,  234,  234,  234
  309.     } ;
  310.  
  311. static short int c[917] =
  312.     {   0,
  313.         0,    1,    1,   10,   11,   11,   29,   10,   12,   12,
  314.        30,   31,   32,   19,   19,   20,   20,  267,   31,   32,
  315.       258,    1,    1,    1,    1,    1,    1,    2,    2,   19,
  316.         2,   20,    2,   29,   33,   34,   35,   30,    2,   36,
  317.       254,   33,   34,   35,   45,   45,   36,    2,    2,    2,
  318.         2,    2,    2,    3,    3,    3,   21,    3,  230,   22,
  319.         3,    3,   37,   37,    3,   21,  123,    3,   22,    3,
  320.         3,  123,   21,  101,   21,   22,  226,   22,   37,    3,
  321.         3,    4,    4,    4,  101,    4,    4,   23,    4,    4,
  322.        38,   38,    4,   55,   55,    4,   23,    4,    4,  146,
  323.  
  324.         4,  223,   24,   23,   23,  146,   38,    4,    4,   13,
  325.        71,   24,   84,   84,  152,   39,   39,   13,   24,   24,
  326.        39,   40,   40,   13,  152,   48,   40,  221,   13,   13,
  327.        13,   13,   13,   13,   14,   52,   52,   71,  129,  129,
  328.        52,  218,   14,   48,  203,   48,   48,  200,   14,  145,
  329.       145,  148,  148,   14,   14,   14,   14,   14,   14,   17,
  330.       170,  170,   52,  140,  140,  156,  155,   17,  140,  157,
  331.        17,   17,  156,  172,  172,  192,  155,  177,  212,  157,
  332.       192,  207,  207,  213,  214,  212,   17,   18,  177,  199,
  333.       140,  155,  196,  213,  214,   18,  206,  206,   18,   18,
  334.  
  335.       216,  206,  206,  220,  220,  227,  227,  216,  228,  228,
  336.       227,  227,  229,  229,   18,   25,   25,  231,  231,  193,
  337.        25,  186,  231,  231,  184,   25,  233,  233,  181,  167,
  338.       165,  163,  160,  143,  142,  137,  135,  133,  131,  128,
  339.        25,  126,   25,   26,   26,  125,  117,  114,   26,  111,
  340.       105,  102,   96,   26,   93,   92,   89,   78,   73,   69,
  341.        66,   64,   63,   59,   58,   49,   47,   42,   26,   28,
  342.        26,   60,   60,   27,   16,   15,    9,    6,    5,   60,
  343.        60,   60,   60,   60,   60,   61,   61,    0,    0,    0,
  344.        61,    0,    0,    0,    0,    0,   61,    0,    0,    0,
  345.  
  346.         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  347.         0,    0,   61,  151,  151,    0,    0,    0,    0,    0,
  348.         0,  151,  151,  151,  151,  151,  151,    0,    0,  151,
  349.       153,  153,    0,    0,    0,  153,    0,    0,    0,    0,
  350.         0,  153,    0,    0,    0,    0,    0,    0,    0,    0,
  351.         0,    0,    0,    0,    0,    0,    0,  153,  235,  235,
  352.       235,  235,  235,  235,  235,  235,  235,  235,  236,  236,
  353.       236,  236,  236,  236,  236,  236,  236,  236,  237,  237,
  354.       237,  237,  237,  237,  237,  237,  237,  237,  238,  238,
  355.       238,  238,  238,  238,  238,  238,  238,  238,  239,  239,
  356.  
  357.       239,  239,  239,  239,  239,  239,  239,  239,  240,  240,
  358.       240,  240,  240,  240,  240,  240,  240,  240,  241,  241,
  359.       241,  241,  241,  241,  241,  241,  241,  241,  242,  242,
  360.       242,  242,  242,  242,  242,  242,  242,  242,  243,  243,
  361.       243,  243,  243,  243,  243,  243,  243,  243,  244,  244,
  362.       244,  244,  244,  244,  244,  244,  244,  244,  245,  245,
  363.       245,  245,  245,  245,  245,  245,  245,  245,  246,  246,
  364.       246,  246,  246,  246,  246,  246,  246,  246,  247,  247,
  365.       247,  247,  247,  247,  247,  247,  247,  247,  248,  248,
  366.       248,  248,  248,  248,  248,  248,  248,  248,  249,  249,
  367.  
  368.       249,  249,  249,  249,  249,  249,  249,  249,  250,  250,
  369.       250,  250,  250,  250,  250,  250,  250,  250,  251,  251,
  370.       251,  251,  251,  251,  251,  251,  251,  251,  252,  252,
  371.       252,  252,  252,  252,  252,  252,  252,  252,  253,  253,
  372.       253,  253,  253,  253,  253,  253,  253,  253,  255,  255,
  373.       255,  255,  255,  255,  255,  255,  255,  255,  256,  256,
  374.       256,  256,  256,  256,  256,  256,  256,  256,  257,  257,
  375.       257,  257,  257,  257,  257,  257,  257,  257,  259,  259,
  376.         0,  259,  259,  259,  259,  259,    0,  259,  260,  260,
  377.         0,  260,  260,  260,  260,  260,  260,  260,  261,  261,
  378.  
  379.         0,  261,  261,  261,  261,  261,  261,  261,  262,  262,
  380.       262,  262,  262,  262,  262,  262,  262,  262,  263,  263,
  381.       263,  263,  263,  263,  263,  263,  263,  263,  264,    0,
  382.         0,  264,  264,  264,  264,  264,  264,  264,  265,  265,
  383.       265,  265,  265,  265,  265,  265,  265,  265,  266,  266,
  384.         0,  266,  266,  266,  266,  266,  266,  266,  268,  268,
  385.         0,  268,  268,  268,  268,  268,  268,  268,  269,  269,
  386.         0,  269,  269,  269,  269,  269,  269,  269,  270,  270,
  387.         0,  270,  270,  270,  270,  270,    0,  270,  271,  271,
  388.         0,    0,    0,  271,  271,  271,  271,  272,  272,    0,
  389.  
  390.       272,  272,  272,  272,  272,  272,  272,  273,  273,  273,
  391.       273,  273,  273,  273,  273,  273,  273,  274,  274,    0,
  392.       274,  274,    0,  274,  274,  274,  274,  275,  275,    0,
  393.       275,  275,    0,  275,  275,  275,  275,  276,  276,    0,
  394.       276,  276,    0,  276,  276,  276,  276,  277,  277,    0,
  395.         0,  277,  277,  277,    0,  277,  277,  278,  278,    0,
  396.       278,  278,  278,  278,  278,  278,  278,  279,  279,    0,
  397.       279,  279,  279,  279,  279,  279,  279,  280,  280,  280,
  398.       280,  280,  280,  280,  280,  280,  280,  281,  281,    0,
  399.       281,  281,  281,  281,  281,  281,  281,  282,  282,  282,
  400.  
  401.       282,  282,  282,  282,  282,  282,  282,  283,  283,  283,
  402.       283,  283,  283,  283,  283,  283,  283,  284,  284,    0,
  403.       284,  284,  284,  284,  284,  284,  285,  285,  285,  285,
  404.       285,  285,  285,  285,  285,  285,  286,  286,    0,  286,
  405.       286,  286,  286,  286,  286,  286,  287,  287,  287,  287,
  406.       287,  287,  287,  287,  287,  287,  288,  288,  288,  288,
  407.       288,  288,  288,  288,  288,  288,  289,  289,  289,  289,
  408.       289,  289,  289,  289,  289,  289,  290,  290,    0,  290,
  409.       290,  290,  290,  290,  290,  290,  234,  234,  234,  234,
  410.       234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
  411.  
  412.       234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
  413.       234,  234,  234,  234,  234,  234
  414.     } ;
  415.  
  416.  
  417. /* these declarations have to come after the section 1 code or lint gets
  418.  * confused about whether the variables are used
  419.  */
  420. FILE *yyin = stdin, *yyout = stdout;
  421.  
  422. /* these variables are all declared out here so that section 3 code can
  423.  * manipulate them
  424.  */
  425. static int yy_start, yy_b_buf_p, yy_c_buf_p, yy_e_buf_p;
  426. static int yy_saw_eof, yy_init = 1;
  427.  
  428. /* yy_ch_buf has to be 1 character longer than YY_BUF_SIZE, since when
  429.  * setting up yytext we can try to put a '\0' just past the end of the
  430.  * matched text
  431.  */
  432. static char yy_ch_buf[YY_BUF_SIZE + 1];
  433. static int yy_st_buf[YY_BUF_SIZE];
  434. static char yy_hold_char;
  435.  
  436. static char input( void) ;
  437. static void unput( char) ;
  438.  
  439. char *yytext;
  440. static int yyleng;
  441.  
  442. /*--------------------------------------------------------------------------*/
  443. /*------------------------- BEGIN LEXICAL ANALYZER -------------------------*/
  444. /*--------------------------------------------------------------------------*/
  445.  
  446. YY_DECL
  447.     {
  448.     int yy_n_chars, yy_lp, yy_iii, yy_buf_pos, yy_act;
  449. #ifdef FLEX_REJECT_ENABLED
  450.     int yy_full_match;
  451. #endif
  452.  
  453.  
  454.     static int bracelevel, didadef;
  455.     int i, cclval;
  456.     char nmdef[MAXLINE], myesc();
  457.  
  458.  
  459.     if ( yy_init )
  460.     {
  461.     YY_INIT;
  462.     yy_start = 1;
  463.     yy_init = 0;
  464.     }
  465.  
  466.     goto get_next_token;
  467.  
  468. do_action:
  469.  
  470. #ifdef FLEX_REJECT_ENABLED
  471.     /* remember matched text in case we back up due to trailing context */
  472.     yy_full_match = yy_c_buf_p;
  473. #endif
  474.  
  475.     for ( ; ; )
  476.     {
  477.     YY_DO_BEFORE_ACTION
  478.  
  479. #ifdef FLEX_DEBUG
  480.     fprintf( stderr, "--accepting rule #%d\n", yy_act );
  481. #endif
  482.     switch ( yy_act )
  483.         {
  484. case 1:
  485. ++linenum; ECHO; /* indented code */
  486.     YY_BREAK
  487. case 2:
  488. ++linenum; ECHO; /* treat as a comment */
  489.     YY_BREAK
  490. case 3:
  491. ECHO; BEGIN(C_COMMENT);
  492.     YY_BREAK
  493. case 4:
  494. return ( SCDECL );
  495.     YY_BREAK
  496. case 5:
  497. return ( XSCDECL );
  498.     YY_BREAK
  499. case 6:
  500. ++linenum; line_directive_out( stdout ); BEGIN(CODEBLOCK);
  501.     YY_BREAK
  502. case 7:
  503. return ( WHITESPACE );
  504.     YY_BREAK
  505. case 8:
  506. {
  507.             sectnum = 2;
  508.             line_directive_out( stdout );
  509.             BEGIN(SECT2PROLOG);
  510.             return ( SECTEND );
  511.             }
  512.     YY_BREAK
  513. case 9:
  514. {
  515.             fprintf( stderr,
  516.                  "old-style lex command at line %d ignored:\n\t%s",
  517.                  linenum, yytext );
  518.             ++linenum;
  519.             }
  520.     YY_BREAK
  521. case 10:
  522. {
  523.             (void) strcpy( nmstr, yytext );
  524.             didadef = false;
  525.             BEGIN(PICKUPDEF);
  526.             }
  527.     YY_BREAK
  528. case 11:
  529. RETURNNAME;
  530.     YY_BREAK
  531. case 12:
  532. ++linenum; /* allows blank lines in section 1 */
  533.     YY_BREAK
  534. case 13:
  535. ++linenum; return ( '\n' );
  536.     YY_BREAK
  537. case 14:
  538. synerr( "illegal character" ); BEGIN(RECOVER);
  539.     YY_BREAK
  540. case 15:
  541. ECHO; BEGIN(0);
  542.     YY_BREAK
  543. case 16:
  544. ++linenum; ECHO; BEGIN(0);
  545.     YY_BREAK
  546. case 17:
  547. ECHO;
  548.     YY_BREAK
  549. case 18:
  550. ECHO;
  551.     YY_BREAK
  552. case 19:
  553. ++linenum; ECHO;
  554.     YY_BREAK
  555. case 20:
  556. ++linenum; BEGIN(0);
  557.     YY_BREAK
  558. case 21:
  559. ++linenum; ECHO;
  560.     YY_BREAK
  561. case 22:
  562. /* separates name and definition */
  563.     YY_BREAK
  564. case 23:
  565. {
  566.             (void) strcpy( nmdef, yytext );
  567.  
  568.             for ( i = strlen( nmdef ) - 1;
  569.                   i >= 0 &&
  570.                   nmdef[i] == ' ' || nmdef[i] == '\t';
  571.                   --i )
  572.                 ;
  573.  
  574.             nmdef[i + 1] = '\0';
  575.  
  576.                         ndinstal( nmstr, nmdef );
  577.             didadef = true;
  578.             }
  579.     YY_BREAK
  580. case 24:
  581. {
  582.             if ( ! didadef )
  583.                 synerr( "incomplete name definition" );
  584.             BEGIN(0);
  585.             ++linenum;
  586.             }
  587.     YY_BREAK
  588. case 25:
  589. ++linenum; BEGIN(0); RETURNNAME;
  590.     YY_BREAK
  591. case 26:
  592. YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  593. yy_c_buf_p -= 1;
  594. YY_DO_BEFORE_ACTION; /* set up yytext again */
  595. {
  596.             ++linenum;
  597.             ACTION_ECHO;
  598.             MARK_END_OF_PROLOG;
  599.             BEGIN(SECT2);
  600.             }
  601.     YY_BREAK
  602. case 27:
  603. ++linenum; ACTION_ECHO;
  604.     YY_BREAK
  605. case 28:
  606. ++linenum; /* allow blank lines in section 2 */
  607.     YY_BREAK
  608.     /* this horrible mess of a rule matches indented lines which
  609.      * do not contain "/*".  We need to make the distinction because
  610.      * otherwise this rule will be taken instead of the rule which
  611.      * matches the beginning of comments like this one
  612.      */
  613. case 29:
  614. {
  615.             synerr( "indented code found outside of action" );
  616.             ++linenum;
  617.             }
  618.     YY_BREAK
  619. case 30:
  620. BEGIN(SC); return ( '<' );
  621.     YY_BREAK
  622. case 31:
  623. return ( '^' );
  624.     YY_BREAK
  625. case 32:
  626. BEGIN(QUOTE); return ( '"' );
  627.     YY_BREAK
  628. case 33:
  629. YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  630. yy_c_buf_p = yy_b_buf_p;
  631. YY_DO_BEFORE_ACTION; /* set up yytext again */
  632. BEGIN(NUM); return ( '{' );
  633.     YY_BREAK
  634. case 34:
  635. BEGIN(BRACEERROR);
  636.     YY_BREAK
  637. case 35:
  638. YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  639. yy_c_buf_p = yy_b_buf_p;
  640. YY_DO_BEFORE_ACTION; /* set up yytext again */
  641. return ( '$' );
  642.     YY_BREAK
  643. case 36:
  644. {
  645.             bracelevel = 1;
  646.             BEGIN(PERCENT_BRACE_ACTION);
  647.             return ( '\n' );
  648.             }
  649.     YY_BREAK
  650. case 37:
  651. ++linenum; return ( '\n' );
  652.     YY_BREAK
  653. case 38:
  654. ACTION_ECHO; BEGIN(C_COMMENT_2);
  655.     YY_BREAK
  656. case 39:
  657. { /* needs to be separate from following rule due to
  658.                * bug with trailing context
  659.                */
  660.             bracelevel = 0;
  661.             BEGIN(ACTION);
  662.             return ( '\n' );
  663.             }
  664.     YY_BREAK
  665. case 40:
  666. YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  667. yy_c_buf_p -= 1;
  668. YY_DO_BEFORE_ACTION; /* set up yytext again */
  669. {
  670.             bracelevel = 0;
  671.             BEGIN(ACTION);
  672.             return ( '\n' );
  673.             }
  674.     YY_BREAK
  675. case 41:
  676. ++linenum; return ( '\n' );
  677.     YY_BREAK
  678. case 42:
  679. {
  680.             /* guarantee that the SECT3 rule will have something
  681.              * to match
  682.              */
  683.             yyless(1);
  684.             sectnum = 3;
  685.             BEGIN(SECT3);
  686.             return ( EOF ); /* to stop the parser */
  687.             }
  688.     YY_BREAK
  689. case 43:
  690. {
  691.             (void) strcpy( nmstr, yytext );
  692.  
  693.             /* check to see if we've already encountered this ccl */
  694.             if ( (cclval = ccllookup( nmstr )) )
  695.                 {
  696.                 yylval = cclval;
  697.                 ++cclreuse;
  698.                 return ( PREVCCL );
  699.                 }
  700.             else
  701.                 {
  702.                 /* we fudge a bit.  We know that this ccl will
  703.                  * soon be numbered as lastccl + 1 by cclinit
  704.                  */
  705.                 cclinstal( nmstr, lastccl + 1 );
  706.  
  707.                 /* push back everything but the leading bracket
  708.                  * so the ccl can be rescanned
  709.                  */
  710.                 PUT_BACK_STRING(nmstr, 1);
  711.  
  712.                 BEGIN(FIRSTCCL);
  713.                 return ( '[' );
  714.                 }
  715.             }
  716.     YY_BREAK
  717. case 44:
  718. {
  719.             register char *nmdefptr;
  720.             char *ndlookup();
  721.  
  722.             (void) strcpy( nmstr, yytext );
  723.             nmstr[yyleng - 1] = '\0';  /* chop trailing brace */
  724.  
  725.             /* lookup from "nmstr + 1" to chop leading brace */
  726.             if ( ! (nmdefptr = ndlookup( nmstr + 1 )) )
  727.                 synerr( "undefined {name}" );
  728.  
  729.             else
  730.                 { /* push back name surrounded by ()'s */
  731.                 unput(')');
  732.                 PUT_BACK_STRING(nmdefptr, 0);
  733.                 unput('(');
  734.                 }
  735.             }
  736.     YY_BREAK
  737. case 45:
  738. return ( yytext[0] );
  739.     YY_BREAK
  740. case 46:
  741. RETURNCHAR;
  742.     YY_BREAK
  743. case 47:
  744. ++linenum; return ( '\n' );
  745.     YY_BREAK
  746. case 48:
  747. return ( ',' );
  748.     YY_BREAK
  749. case 49:
  750. BEGIN(SECT2); return ( '>' );
  751.     YY_BREAK
  752. case 50:
  753. YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  754. yy_c_buf_p = yy_b_buf_p;
  755. YY_DO_BEFORE_ACTION; /* set up yytext again */
  756. BEGIN(CARETISBOL); return ( '>' );
  757.     YY_BREAK
  758. case 51:
  759. RETURNNAME;
  760.     YY_BREAK
  761. case 52:
  762. synerr( "bad start condition name" );
  763.     YY_BREAK
  764. case 53:
  765. BEGIN(SECT2); return ( '^' );
  766.     YY_BREAK
  767. case 54:
  768. RETURNCHAR;
  769.     YY_BREAK
  770. case 55:
  771. BEGIN(SECT2); return ( '"' );
  772.     YY_BREAK
  773. case 56:
  774. {
  775.             synerr( "missing quote" );
  776.             BEGIN(SECT2);
  777.             ++linenum;
  778.             return ( '"' );
  779.             }
  780.     YY_BREAK
  781. case 57:
  782. YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  783. yy_c_buf_p = yy_b_buf_p;
  784. YY_DO_BEFORE_ACTION; /* set up yytext again */
  785. BEGIN(CCL); return ( '^' );
  786.     YY_BREAK
  787. case 58:
  788. YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  789. yy_c_buf_p = yy_b_buf_p;
  790. YY_DO_BEFORE_ACTION; /* set up yytext again */
  791. return ( '^' );
  792.     YY_BREAK
  793. case 59:
  794. BEGIN(CCL); yylval = '-'; return ( CHAR );
  795.     YY_BREAK
  796. case 60:
  797. BEGIN(CCL); RETURNCHAR;
  798.     YY_BREAK
  799. case 61:
  800. YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  801. yy_c_buf_p = yy_b_buf_p;
  802. YY_DO_BEFORE_ACTION; /* set up yytext again */
  803. return ( '-' );
  804.     YY_BREAK
  805. case 62:
  806. RETURNCHAR;
  807.     YY_BREAK
  808. case 63:
  809. BEGIN(SECT2); return ( ']' );
  810.     YY_BREAK
  811. case 64:
  812. {
  813.             yylval = myctoi( yytext );
  814.             return ( NUMBER );
  815.             }
  816.     YY_BREAK
  817. case 65:
  818. return ( ',' );
  819.     YY_BREAK
  820. case 66:
  821. BEGIN(SECT2); return ( '}' );
  822.     YY_BREAK
  823. case 67:
  824. {
  825.             synerr( "bad character inside {}'s" );
  826.             BEGIN(SECT2);
  827.             return ( '}' );
  828.             }
  829.     YY_BREAK
  830. case 68:
  831. {
  832.             synerr( "missing }" );
  833.             BEGIN(SECT2);
  834.             ++linenum;
  835.             return ( '}' );
  836.             }
  837.     YY_BREAK
  838. case 69:
  839. synerr( "bad name in {}'s" ); BEGIN(SECT2);
  840.     YY_BREAK
  841. case 70:
  842. synerr( "missing }" ); ++linenum; BEGIN(SECT2);
  843.     YY_BREAK
  844. case 71:
  845. bracelevel = 0;
  846.     YY_BREAK
  847. case 72:
  848. ACTION_ECHO;
  849.     YY_BREAK
  850. case 73:
  851. {
  852.             ++linenum;
  853.             ACTION_ECHO;
  854.             if ( bracelevel == 0 )
  855.                 {
  856.                 fputs( "\tYY_BREAK\n", temp_action_file );
  857.                 BEGIN(SECT2);
  858.                 }
  859.             }
  860.     YY_BREAK
  861. case 74:
  862. ACTION_ECHO; ++bracelevel;
  863.     YY_BREAK
  864. case 75:
  865. ACTION_ECHO; --bracelevel;
  866.     YY_BREAK
  867. case 76:
  868. ACTION_ECHO;
  869.     YY_BREAK
  870. case 77:
  871. ACTION_ECHO; BEGIN(ACTION_COMMENT);
  872.     YY_BREAK
  873. case 78:
  874. ACTION_ECHO; /* character constant */
  875.     YY_BREAK
  876. case 79:
  877. ACTION_ECHO; BEGIN(ACTION_STRING);
  878.     YY_BREAK
  879. case 80:
  880. {
  881.             ++linenum;
  882.             ACTION_ECHO;
  883.             if ( bracelevel == 0 )
  884.                 {
  885.                 fputs( "\tYY_BREAK\n", temp_action_file );
  886.                 BEGIN(SECT2);
  887.                 }
  888.             }
  889.     YY_BREAK
  890. case 81:
  891. ACTION_ECHO;
  892.     YY_BREAK
  893. case 82:
  894. ACTION_ECHO; BEGIN(ACTION);
  895.     YY_BREAK
  896. case 83:
  897. ACTION_ECHO;
  898.     YY_BREAK
  899. case 84:
  900. ACTION_ECHO;
  901.     YY_BREAK
  902. case 85:
  903. ++linenum; ACTION_ECHO;
  904.     YY_BREAK
  905. case 86:
  906. ACTION_ECHO;
  907.     YY_BREAK
  908. case 87:
  909. ACTION_ECHO; BEGIN(SECT2);
  910.     YY_BREAK
  911. case 88:
  912. ++linenum; ACTION_ECHO; BEGIN(SECT2);
  913.     YY_BREAK
  914. case 89:
  915. ACTION_ECHO;
  916.     YY_BREAK
  917. case 90:
  918. ACTION_ECHO;
  919.     YY_BREAK
  920. case 91:
  921. ++linenum; ACTION_ECHO;
  922.     YY_BREAK
  923. case 92:
  924. ACTION_ECHO;
  925.     YY_BREAK
  926. case 93:
  927. ACTION_ECHO;
  928.     YY_BREAK
  929. case 94:
  930. ++linenum; ACTION_ECHO;
  931.     YY_BREAK
  932. case 95:
  933. ACTION_ECHO; BEGIN(ACTION);
  934.     YY_BREAK
  935. case 96:
  936. ACTION_ECHO;
  937.     YY_BREAK
  938. case 97:
  939. {
  940.             yylval = myesc( yytext );
  941.             return ( CHAR );
  942.             }
  943.     YY_BREAK
  944. case 98:
  945. {
  946.             yylval = myesc( yytext );
  947.             BEGIN(CCL);
  948.             return ( CHAR );
  949.             }
  950.     YY_BREAK
  951. case 99:
  952. {
  953.             register int numchars;
  954.  
  955.             /* black magic - we know the names of a flex scanner's
  956.              * internal variables.  We cap the input buffer with
  957.              * an end-of-string and dump it to the output.
  958.              */
  959.             YY_DO_BEFORE_SCAN; /* recover from setting up yytext */
  960.  
  961. #ifdef FLEX_FAST_SKEL
  962.             fputs( yy_c_buf_p + 1, stdout );
  963. #else
  964.             yy_ch_buf[yy_e_buf_p + 1] = '\0';
  965.  
  966.             /* ignore the first character; it's the second '%'
  967.              * put back by the yyless(1) above
  968.              */
  969.             fputs( yy_ch_buf + yy_c_buf_p + 1, stdout );
  970. #endif
  971.  
  972.             /* if we don't do this, the data written by write()
  973.              * can get overwritten when stdout is finally flushed
  974.              */
  975.             (void) fflush( stdout );
  976.  
  977.             while ( (numchars = read( fileno(yyin), yy_ch_buf,
  978.                           YY_BUF_MAX )) > 0 )
  979.                 (void) write( fileno(stdout), yy_ch_buf, numchars );
  980.     
  981.             if ( numchars < 0 )
  982.                 flexerror( "fatal read error in section 3" );
  983.  
  984.             return ( EOF );
  985.             }
  986.     YY_BREAK
  987. case 100:
  988. YY_DEFAULT_ACTION;
  989.     YY_BREAK
  990.  
  991. case YY_NEW_FILE:
  992. break; /* begin reading from new file */
  993.  
  994. case YY_END_TOK:
  995. return ( YY_END_TOK );
  996.  
  997. default:
  998. YY_FATAL_ERROR( "fatal flex scanner internal error" );
  999.         }
  1000.  
  1001. get_next_token:
  1002.     {
  1003.     register int yy_curst;
  1004.     register char yy_sym;
  1005.  
  1006.     YY_DO_BEFORE_SCAN
  1007.  
  1008.     /* set up to begin running DFA */
  1009.  
  1010.     yy_curst = yy_start;
  1011.  
  1012.     if ( yy_ch_buf[yy_c_buf_p] == '\n' )
  1013.         ++yy_curst;
  1014.  
  1015.     /* yy_b_buf_p points to the position in yy_ch_buf
  1016.      * of the start of the current run.
  1017.      */
  1018.  
  1019.     yy_b_buf_p = yy_c_buf_p + 1;
  1020.  
  1021.     do /* until the machine jams */
  1022.         {
  1023.         if ( yy_c_buf_p == yy_e_buf_p )
  1024.         { /* need more input */
  1025.         if ( yy_e_buf_p >= YY_BUF_LIM )
  1026.             { /* not enough room to do another read */
  1027.             /* see if we can make some room for more chars */
  1028.  
  1029.             yy_n_chars = yy_e_buf_p - yy_b_buf_p;
  1030.  
  1031.             if ( yy_n_chars >= 0 )
  1032.             /* shift down buffer to make room */
  1033.             for ( yy_iii = 0; yy_iii <= yy_n_chars; ++yy_iii )
  1034.                 {
  1035.                 yy_buf_pos = yy_b_buf_p + yy_iii;
  1036.                 yy_ch_buf[yy_iii] = yy_ch_buf[yy_buf_pos];
  1037.                 yy_st_buf[yy_iii] = yy_st_buf[yy_buf_pos];
  1038.                 }
  1039.  
  1040.             yy_b_buf_p = 0;
  1041.             yy_e_buf_p = yy_n_chars;
  1042.  
  1043.             if ( yy_e_buf_p >= YY_BUF_LIM )
  1044.             YY_FATAL_ERROR( "flex input buffer overflowed" );
  1045.  
  1046.             yy_c_buf_p = yy_e_buf_p;
  1047.             }
  1048.  
  1049.         else if ( yy_saw_eof )
  1050.             {
  1051. saweof:            if ( yy_b_buf_p > yy_e_buf_p )
  1052.             {
  1053.             if ( yywrap() )
  1054.                 {
  1055.                 yy_act = YY_END_TOK;
  1056.                 goto do_action;
  1057.                 }
  1058.             
  1059.             else
  1060.                 {
  1061.                 YY_INIT;
  1062.                 yy_act = YY_NEW_FILE;
  1063.                 goto do_action;
  1064.                 }
  1065.             }
  1066.  
  1067.             else /* do a jam to eat up more input */
  1068.             {
  1069. #ifndef FLEX_INTERACTIVE_SCANNER
  1070.             /* we're going to decrement yy_c_buf_p upon doing
  1071.              * the jam.  In this case, that's wrong, since
  1072.              * it points to the last non-jam character.  So
  1073.              * we increment it now to counter the decrement.
  1074.              */
  1075.             ++yy_c_buf_p;
  1076. #endif
  1077.             break;
  1078.             }
  1079.             }
  1080.  
  1081.         YY_INPUT( (yy_ch_buf + yy_c_buf_p + 1), yy_n_chars,
  1082.               YY_MAX_LINE );
  1083.  
  1084.         if ( yy_n_chars == YY_NULL )
  1085.             {
  1086.             if ( yy_saw_eof )
  1087.     YY_FATAL_ERROR( "flex scanner saw EOF twice - shouldn't happen" );
  1088.             yy_saw_eof = 1;
  1089.             goto saweof;
  1090.             }
  1091.  
  1092.         yy_e_buf_p += yy_n_chars;
  1093.         }
  1094.  
  1095.         ++yy_c_buf_p;
  1096.  
  1097. #ifdef FLEX_USE_ECS
  1098.         yy_sym = e[yy_ch_buf[yy_c_buf_p]];
  1099. #else
  1100.         yy_sym = yy_ch_buf[yy_c_buf_p];
  1101. #endif
  1102.  
  1103. #ifdef FLEX_FULL_TABLE
  1104.         yy_curst = n[yy_curst][yy_sym];
  1105.  
  1106. #else /* get next state from compressed table */
  1107.  
  1108.         while ( c[b[yy_curst] + yy_sym] != yy_curst )
  1109.         {
  1110.         yy_curst = d[yy_curst];
  1111.  
  1112. #ifdef FLEX_USE_MECS
  1113.         /* we've arrange it so that templates are never chained
  1114.          * to one another.  This means we can afford make a
  1115.          * very simple test to see if we need to convert to
  1116.          * yy_sym's meta-equivalence class without worrying
  1117.          * about erroneously looking up the meta-equivalence
  1118.          * class twice
  1119.          */
  1120.  
  1121.         if ( yy_curst >= YY_TEMPLATE )
  1122.             yy_sym = m[yy_sym];
  1123. #endif
  1124.         }
  1125.  
  1126.         yy_curst = n[b[yy_curst] + yy_sym];
  1127.  
  1128. #endif
  1129.  
  1130.         yy_st_buf[yy_c_buf_p] = yy_curst;
  1131.  
  1132.         }
  1133. #ifdef FLEX_INTERACTIVE_SCANNER
  1134.     while ( b[yy_curst] != YY_JAM_BASE );
  1135. #else
  1136.     while ( yy_curst != YY_JAM );
  1137.     --yy_c_buf_p; /* put back character we jammed on */
  1138.  
  1139. #endif
  1140.  
  1141.     if ( yy_c_buf_p >= yy_b_buf_p )
  1142.         { /* we matched some text */
  1143.         yy_curst = yy_st_buf[yy_c_buf_p];
  1144.         yy_lp = l[yy_curst];
  1145.  
  1146. #ifdef FLEX_REJECT_ENABLED
  1147. find_rule: /* we branch to this label when doing a REJECT */
  1148. #endif
  1149.  
  1150.         for ( ; ; ) /* until we find what rule we matched */
  1151.         {
  1152. #ifdef FLEX_REJECT_ENABLED
  1153.         if ( yy_lp && yy_lp < l[yy_curst + 1] )
  1154.             {
  1155.             yy_act = a[yy_lp];
  1156.             goto do_action; /* "continue 2" */
  1157.             }
  1158. #else
  1159.         if ( yy_lp )
  1160.             {
  1161.             yy_act = yy_lp;
  1162.             goto do_action; /* "continue 2" */
  1163.             }
  1164. #endif
  1165.  
  1166.         if ( --yy_c_buf_p < yy_b_buf_p )
  1167.             break;
  1168.  
  1169.         yy_curst = yy_st_buf[yy_c_buf_p];
  1170.         yy_lp = l[yy_curst];
  1171.         }
  1172.         }
  1173.  
  1174.     YY_FATAL_ERROR( "no match in flex scanner - possible NULL in input" );
  1175.     }
  1176.     }
  1177.  
  1178.     /*NOTREACHED*/
  1179.     }
  1180.  
  1181.  
  1182. static  void unput( c )
  1183. char c;
  1184. {
  1185.  register int i;
  1186.  register int yy_buf_pos ;
  1187.  
  1188.     YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  1189.  
  1190.     if ( yy_c_buf_p == 0 )
  1191.     {
  1192.     yy_buf_pos = YY_BUF_MAX ;
  1193.     for ( i = yy_e_buf_p; i >= yy_c_buf_p; --i )
  1194.         {
  1195.         yy_ch_buf[yy_buf_pos] = yy_ch_buf[i];
  1196.         yy_st_buf[yy_buf_pos] = yy_st_buf[i];
  1197.         --yy_buf_pos;
  1198.         }
  1199.  
  1200.     yy_c_buf_p = YY_BUF_MAX - yy_e_buf_p;
  1201.     yy_e_buf_p = YY_BUF_MAX;
  1202.     }
  1203.  
  1204.     if ( yy_c_buf_p <= 0 )
  1205.     YY_FATAL_ERROR( "flex scanner push-back overflow" );
  1206.  
  1207.     if ( yy_c_buf_p >= yy_b_buf_p && yy_ch_buf[yy_c_buf_p] == '\n' )
  1208.     yy_ch_buf[yy_c_buf_p - 1] = '\n';
  1209.  
  1210.     yy_ch_buf[yy_c_buf_p--] =  c;
  1211.  
  1212.     YY_DO_BEFORE_ACTION; /* set up yytext again */
  1213.  
  1214.     }
  1215.  
  1216.  
  1217. static char input( void)
  1218. {
  1219.     char c;
  1220.  
  1221.     YY_DO_BEFORE_SCAN
  1222.  
  1223.     if ( yy_c_buf_p == yy_e_buf_p )
  1224.     { /* need more input */
  1225.     int yy_n_chars;
  1226.  
  1227.     /* we can throw away the entire current buffer */
  1228.     if ( yy_saw_eof )
  1229.         {
  1230.         if ( yywrap() )
  1231.         return ( EOF );
  1232.  
  1233.         YY_INIT;
  1234.         }
  1235.  
  1236.     yy_b_buf_p = 0;
  1237.     YY_INPUT( yy_ch_buf, yy_n_chars, YY_MAX_LINE );
  1238.  
  1239.     if ( yy_n_chars == YY_NULL )
  1240.     {
  1241.         yy_saw_eof = 1;
  1242.  
  1243.         if ( yywrap() )
  1244.         return ( EOF );
  1245.  
  1246.         YY_INIT;
  1247.  
  1248.         return ( input() );
  1249.     }
  1250.  
  1251.     yy_c_buf_p = -1;
  1252.     yy_e_buf_p = yy_n_chars - 1;
  1253.     }
  1254.  
  1255.     c = (unsigned char) yy_ch_buf[++yy_c_buf_p];
  1256.  
  1257.     YY_DO_BEFORE_ACTION;
  1258.  
  1259.     return ( c );
  1260.     }
  1261.  
  1262. /*--------------------------------------------------------------------------*/
  1263. /*------------------------- END OF LEXICAL ANALYZER ------------------------*/
  1264. /*--------------------------------------------------------------------------*/
  1265.  
  1266.  
  1267.